#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
调试验证逻辑

功能说明：
- 直接测试RequirementModel的validate_data方法
- 找出验证逻辑的问题
"""

import os
import sys
from dotenv import load_dotenv
from pymongo import MongoClient

# 添加当前目录到Python路径
sys.path.append(os.path.dirname(os.path.abspath(__file__)))

from models import RequirementModel

# 加载环境变量
load_dotenv()

def test_validation_directly():
    """直接测试验证逻辑"""
    print("开始调试验证逻辑...")
    
    # 连接数据库
    try:
        client = MongoClient(os.getenv('MONGODB_URI', 'mongodb://localhost:27017/'))
        db = client[os.getenv('DATABASE_NAME', 'marketiq_ai')]
        model = RequirementModel(db)
        print("✅ 数据库连接成功")
    except Exception as e:
        print(f"❌ 数据库连接失败: {e}")
        return
    
    # 测试数据
    test_cases = [
        {
            'name': '完整数据',
            'data': {
                'core_goal': '提升品牌知名度',
                'target_audience': '25-35岁白领',
                'budget_per_person': '100-200元',
                'focus_point': '实用性',
                'customer_preference': '简约风格',
                'customer_pain_points': '价格敏感',
                'gift_preference': '数码产品',
                'specific_product': 'iPhone手机壳'
            },
            'expected': True
        },
        {
            'name': '缺少必填字段',
            'data': {
                'core_goal': '提升品牌知名度',
                'target_audience': '25-35岁白领',
                # 缺少其他必填字段
                'gift_preference': '数码产品',
                'specific_product': 'iPhone手机壳'
            },
            'expected': False
        },
        {
            'name': '必填字段为空字符串',
            'data': {
                'core_goal': '',
                'target_audience': '25-35岁白领',
                'budget_per_person': '100-200元',
                'focus_point': '实用性',
                'customer_preference': '简约风格',
                'customer_pain_points': '价格敏感'
            },
            'expected': False
        },
        {
            'name': '仅必填字段',
            'data': {
                'core_goal': '提升品牌知名度',
                'target_audience': '25-35岁白领',
                'budget_per_person': '100-200元',
                'focus_point': '实用性',
                'customer_preference': '简约风格',
                'customer_pain_points': '价格敏感'
            },
            'expected': True
        }
    ]
    
    print(f"\n必填字段: {RequirementModel.REQUIRED_FIELDS}")
    print(f"选填字段: {RequirementModel.OPTIONAL_FIELDS}")
    
    for i, test_case in enumerate(test_cases, 1):
        print(f"\n=== 测试 {i}: {test_case['name']} ===")
        print(f"数据: {test_case['data']}")
        
        is_valid, message = model.validate_data(test_case['data'])
        print(f"验证结果: {is_valid}")
        print(f"消息: {message}")
        print(f"预期结果: {test_case['expected']}")
        print(f"测试{'通过' if is_valid == test_case['expected'] else '失败'}")
        
        # 如果验证通过，尝试创建
        if is_valid:
            print("尝试创建需求...")
            success, create_message, requirement = model.create(test_case['data'])
            print(f"创建结果: {success}")
            print(f"创建消息: {create_message}")
            if requirement:
                print(f"创建的需求ID: {requirement.get('id')}")

if __name__ == '__main__':
    test_validation_directly()